#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

const int N = 100010;

int L,n,k;
int q[N],s[N];

bool check(int x){
	int i = 0;
	int cnt = 0;
	int now = 0;
	for(int i = 1;i <= n; i++){
		if(s[i]>x){
			cnt++;
			int num = s[i]-x;
			while(num>x){
				cnt++;
				num-=x;
			}
		}
	}
	if(cnt<=k){
		return true;
	}
	else{
		return false;
	}
}
int main(){
	cin>>L>>n>>k;
	int highest = 0;
	for(int i = 1;i <= n; i++){
		cin>>q[i];
		highest = max(q[i],highest);
		s[i]=q[i]-q[i-1];
	}
	
	q[n+1]=L;
	s[n+1]=q[n+1]-q[n];
	int l = 0,r = highest;
	while(l+1<r){
		int mid = (l+r)>>1;
		if(check(mid)){
			r = mid;
		}
		else{
			l = mid;
		}
	}
	if(check(l)){
		cout<<l<<endl;
	}
	else{
		cout<<r<<endl;
	}
	return 0;
}
